package com.shandao.shangxiu.base;

import android.app.ProgressDialog;
import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.ActionBar;
import android.support.v7.app.ActionBarActivity;
import android.support.v7.widget.Toolbar;
import android.view.LayoutInflater;
import android.view.MenuItem;
import android.view.View;
import android.widget.ImageView;
import android.widget.TextView;

import com.shandao.shangxiu.AppManager;
import com.shandao.shangxiu.R;
import com.shandao.shangxiu.interf.BaseViewInterface;
import com.shandao.shangxiu.interf.DialogControl;
import com.shandao.shangxiu.util.TDevice;
import com.shandao.shangxiu.util.ToastUtils;
import com.ta.utdid2.android.utils.StringUtils;


/**
 * baseActionBar Activity
 * 通用Activity
 */
public abstract class BaseActivity extends ActionBarActivity implements
        DialogControl, View.OnClickListener, BaseViewInterface {
    public String TAG;
    /**
     * 用于关闭前一个activity
     */
    public static final int REQUEST_FOR_FINISH = 100;
    /**
     * 用于去获得某个值
     */
    public static final int REQUEST_FOR_RESULT = 97;
    /**
     * app的标题栏
     */
    protected Toolbar toolbar;
    /**
     * 菜单栏设置文字
     */
    private TextView tv_title;
    /**
     * 加载对话框
     */
    private ProgressDialog _waitDialog;
    /**
     * 布局解析类
     */
    protected LayoutInflater mInflater;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        AppManager.getAppManager().addActivity(this);
        TAG = getClass().getSimpleName();
        onBeforeSetContentLayout();
        if (getLayoutId() != 0) {
            setContentView(getLayoutId());
        }
        mInflater = getLayoutInflater();
        if (hasToolbar()) {
            initToolbar();
        }
        init(savedInstanceState);
        initView();
        initData();
    }


    protected void onBeforeSetContentLayout() {
    }

    /**
     * 是否需要显示标题栏
     *
     * @return true为显示 false不显示 默认有标题
     */
    protected boolean hasToolbar() {
        return true;
    }

    /**
     * 设置布局文件
     *
     * @return 布局文件的Id
     */
    protected int getLayoutId() {
        return 0;
    }

    /**
     * 解析布局文件
     *
     * @return view
     */
    protected View inflateView(int resId) {
        return mInflater.inflate(resId, null);
    }

    /**
     * 是否显示返回按钮
     *
     * @return true显示 false不显示 默认显示
     */
    protected boolean hasBackButton() {
        return true;
    }


    protected void init(Bundle savedInstanceState) {
    }


    /**
     * 初始化标题栏
     *
     * @param
     */
    protected void initToolbar() {
        toolbar = (Toolbar) findViewById(R.id.toolbar);
        tv_title = (TextView) toolbar.findViewById(R.id.toolbar_title);
        setSupportActionBar(toolbar);
        getSupportActionBar().setDisplayShowTitleEnabled(false);
        if (hasBackButton()) {
            toolbar.setNavigationIcon(R.mipmap.icon_back);
            toolbar.setNavigationOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    onBackPressed();
                }
            });
        }
    }


    @Override
    public void onBackPressed() {
        super.onBackPressed();
    }


    /**
     * 设置标题栏的文字
     *
     * @param resId 文字的资源Id
     */
    public void setToolbarTitle(int resId) {
        if (resId != 0) {
            setToolbarTitle(getString(resId));
        }
    }

    /**
     * 设置标题栏的文字
     *
     * @param title 文字的文本
     */
    public void setToolbarTitle(String title) {
        if (StringUtils.isEmpty(title)) {
            title = getString(R.string.app_name);
        }
        if (hasToolbar() && toolbar != null) {
            tv_title.setText(title);
        }
    }


    /**
     * 显示加载对话框 默认使用R.string.loading
     *
     * @return 返回一个加载对话框
     */
    public ProgressDialog showWaitDialog() {
        return showWaitDialog(R.string.loading);
    }

    /**
     * 显示加载对话框
     *
     * @param resid 使用系统中的自定义的文字显示
     * @return 返回一个加载对话框
     */
    public ProgressDialog showWaitDialog(int resid) {
        return showWaitDialog(getString(resid));
    }


    /**
     * 显示加载对话框
     *
     * @param message 文字显示信息
     * @return 返回一个加载对话框
     */
    public ProgressDialog showWaitDialog(String message) {
        if (_waitDialog == null) {
            _waitDialog = new ProgressDialog(this);
            _waitDialog.setCanceledOnTouchOutside(false);
            _waitDialog.setMessage(message);
            _waitDialog.show();
        }
        return _waitDialog;
    }

    /**
     * 隐藏加载对话框
     */
    public void hideWaitDialog() {
        if (_waitDialog != null) {
            try {
                _waitDialog.dismiss();
                _waitDialog = null;
            } catch (Exception ex) {
                ex.printStackTrace();
            }
        }
    }

    /**
     * 显示提示框
     *
     * @param msgResid 使用系统中的自定义的文字显示
     */
    public void showToast(int msgResid) {
        showToast(getString(msgResid));
    }

    /**
     * 显示提示框
     *
     * @param message 文字显示message
     */
    public void showToast(String message) {
        ToastUtils.show(message);
    }


    /**
     * 用于关闭前一个activity
     */
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        if (resultCode == RESULT_OK) {
            if (requestCode == REQUEST_FOR_FINISH) {
                setResult(RESULT_OK);
                finish();
            }
        }
        super.onActivityResult(requestCode, resultCode, data);
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
    }


    /**
     * 判断是否有网络
     *
     * @return true为有网络 false为没有网络 打开设置网络对话框
     */
    protected boolean isPrepartForNet() {
        if (!TDevice.hasInternet()) {
            TDevice.setNetworkMethod(this);
            return false;
        }
        return true;
    }

}
